#pragma once
#include "Textura.h"
#include "String.h"
#include "math.h"
using namespace std;

class Elemento
{

protected:
	double posx;
	double posy;
	Textura* fondo;
	Textura* fondosRotados;
	string id;
	int angulo;

public:
	Elemento(void);
	~Elemento(void);
	String GetId();
	void SetId(String Id);
	int getAngulo(void){return this->angulo;}
	void setAngulo(int a){this->angulo = a;}
	virtual double getPosX(void){return this->posx;}
	virtual double getNorte(void);
	virtual double getSur(void);
	virtual double getEste(void);
	virtual double getOeste(void);
	virtual double getPosY(void){return this->posy;}
	virtual void setPosX(double x){this->posx = x;}
	virtual void setPosY(double y){this->posy = y;}
	virtual string getid(void){return this->id;}
	virtual Textura* getFondo(void){return this->fondo;}
	virtual void setFondo(Textura* fondito){this->fondo=fondito;}

	virtual Textura* getFondosRotados(){return this->fondosRotados;}
	virtual string toString(void);
	virtual int posXRelAPantalla(int h, int w);
	virtual int posYRelAPantalla(int h, int w);
	virtual void Dibujar(SDL_Surface *screen);
	virtual void DibujarRotaciones(SDL_Surface *screen);
	virtual void CargarTextura();
	virtual void CargarTexturasRotadas();

};
